<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			// 连接两个或多个数组
			// 不包括去重.排序
			console.log([1,2,3].concat([3,5,4], [55,87]));   //[ 1, 2, 3, 3, 5, 4, 55, 87 ]

			// 使用指定字符串拼接数组中所有元素为一个字符串并返回
			// 空字符串
			console.log([1,2,3].join(''))    // '123'
			// 不传参数则使用默认参数','
			console.log([1,2,3].join())   // '1,2,3' 默认会使用逗号分割
			// 传入逗号与默认参数结果一致.推荐传递参数而不是默认参数
			console.log([1,2,3].join(','))   // '1,2,3'
			console.log([1,2,3].join(':'))   // '1:2:3'
			// 当逗号存在于元素内部时.一般需要换成其他分隔符
			console.log(['abc','b,c,d','e,,,d,,,eee,,,ee'].join('|'))   // abc|b,c,d|e,,,d,,,eee,,,ee
			// 字符串转为对应数组
			// '1,2,3'.split(",")

			// 删除并返回数组最后一个元素
			var list1 = [1,2,3]c
			console.log(list1);
			var result = list1.pop();
			console.log(result);    // 3
			console.log(list1);
			console.log("-----------")
			
			// 向数组尾部添加一个或多个元素。返回添加元素后的数组长度
			var a1 = [1,2,3];
			a1.push(3,4,5);    // 6
			console.log(a1);   // [1,2,3,3,4,5]


			// 颠倒数组中元素的顺序.不具有排序效果
		    a1 = [5, 3, 7, 1, 2]
			console.log(a1);
			console.log(a1.reverse());  // [2, 1, 7, 3, 5]
            
			console.log("begin a1.shift")
			console.log(a1)
			// 删除并返回数组第一个元素
			console.log(a1.shift());   // 2
			console.log(a1);  // [1, 7, 3, 5]

			// 截取指定索引开始到结束索引之前的字符串
			console.log(a1.slice(2, 4))   // [3, 5]

			// 对数组元素进行排序
			var a2 = ['Genorge', 'John', 'Thomas', 'James', 'Adrew', 'Martin']
			a2.sort()   // [ 'Adrew', 'Genorge', 'James', 'John', 'Martin', 'Thomas' ]
 
			console.log("begin list sort")
			// 字符串排序按照首字符排序。首字符相同则继续按第二位进行排列
			var a3 = ['10', '5', '40', '25', '1000', '1'];
			console.log(a3.sort()); // [ '1', '10', '1000', '25', '40', '5' ]
			a3 = ['12', '5', '40', '25', '1000', '1'];
            console.log(a3.sort());

			console.log('begin sort Number')
			console.log(a3)
			// 使用函数实现按照数字从小到大排序
			function sortNumber(a, b){
				return a - b;
			}
			console.log(a3.sort());
			console.log(a3.sort(sortNumber)); //[ '1', '5', '10', '25', '40', '1000' ]
			
			console.log("对纯数字数组进行排序");
			a3 = [5, 3, 4, 1, 55, 33];
// 			console.log("未使用排序函数的结果");
// 			console.log(a3.sort());
			console.log("使用了排序函数的结果");
			console.log(a3.sort(sortNumber));
			
// 			function sortNumber2(a, b){
// 				return b - a;
// 			}
// 			console.log("使用了排序函数2的结果");
// 			console.log(a3.sort(sortNumber2));

            console.log("begin splice ");
			// 把数组中指定位置开始指定数量的元素删除。并返回删除的元素。删除数量为0则不删除
			var a4 = [1,2,3,4,5,6]
			console.log(a4.splice(2, 2));   // [ 3, 4 ]
			console.log([1, 2, 3].splice(2, 2)); // 获取数量若超过元素总数则只返回存在的元素
			console.log(a4)   // [ 1, 2, 5, 6 ]

            console.log("开始splice删除元素后插入新元素")
			// 把数组中指定位置开始指定数量的元素删除。并返回删除的元素。删除数量为0则不删除.然后向数组中添加一个或多个新的元素
			var a5 = [1,2,3,4,5,6]
			console.log(a5.splice(2, 2, 9, 11, 13));   // [3, 4]
			console.log(a5)    // [ 1, 2, 9, 11, 13, 5, 6 ]


			// 向数组开头添加一个或多个元素。并返回新的长度
			var a6 = [1,2,3]
			console.log(a6.unshift(5, 6, 7))   // 6
			console.log(a6)     /[5, 6, 7, 1, 2, 3]
		</script>
	</body>
</html>
